﻿using SOAPServicios.Dominio;
using NHibernate;
using System.Collections.Generic;
using NHibernate.Criterion;
using System.Collections;

namespace SOAPServicios.Persistencia
{
    public class PrestamoDAO : BaseDAO<Prestamo, int>
    {
        public ICollection<Prestamo> ListaSolicitudesPendientes()
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                //ICriteria busqueda = sesion.CreateCriteria(typeof(Prestamo));
                ICriteria busqueda = sesion.CreateCriteria(typeof(Prestamo)).Add(Expression.Eq("DeSituacion", "Pendiente"));
                return busqueda.List<Prestamo>();
            }
        }

        public ICollection<Prestamo> ListaSolicitudesAnuladas()
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                //ICriteria busqueda = sesion.CreateCriteria(typeof(Prestamo));
                ICriteria busqueda = sesion.CreateCriteria(typeof(Prestamo)).Add(Expression.Eq("DeSituacion", "Anulada"));
                return busqueda.List<Prestamo>();
            }
        }

        public bool PublicacionDisponible(Prestamo solicitud)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(Usuario)).Add(Expression.Eq("Publicacion.IdPublicacion", solicitud.Publicacion.IdPublicacion)).Add(Expression.Eq("DeSituacion", "Entregado"));
                if (busqueda.UniqueResult<Prestamo>() == null)
                { return true;}
                else
                { return false; }
            }
        }

        public ICollection<Prestamo> NoDevueltosxDNI(int idusuario)
        {
            using (ISession sesion = NHibernateHelper.ObtenerSesion())
            {
                ICriteria busqueda = sesion.CreateCriteria(typeof(Prestamo)).Add(Expression.Eq("Usuario.IdUsuario", idusuario)).Add(Expression.Eq("DeSituacion", "Entregado"));
                return busqueda.List<Prestamo>();
            }
        }

    }
}